// 权限拦截 导航守卫 路由守卫  router
import router from '@/router' // 引入路由实例
import store from '@/store' // 引入vuex store实例
import { getToken } from "@/utils/auth";

import { Message } from 'element-ui';

import 'nprogress/nprogress.css'
import NProgress from 'nprogress'
const whitelist = ['/login', '/404']

//前置钩子
router.beforeEach(async (to, from, next) => {
    // 进入页面之前开启进度条
    NProgress.start()
    if (getToken()) {
        //有 
        // 存在
        // 得到用户信息
        const userInfo = store.getters.userInfo
        // 判断用户信息是否存在
        if (!userInfo.username) {
            // 不存在：获取用户信息
            await store.dispatch('user/getuserInfo')
        }
        // 判断是否访问的登录页面
        if (to.path === '/login') {
            //是 就跳转主页
            Message.info('你已登录')
            NProgress.done()
            next('/')
        } else {
            //不是 登录页
            next()
        }
    } else {
        //没有
        if (whitelist.includes(to.path)) {
            //是白名单
            next()
        } else {
            Message.info('请先登录')
            // 不在白名单中，跳转到登录页面; 保存要访问路径的路由 to.path
            next(`/login?_redirect=${to.path}`)
        }
    }
});


// 后置钩子
router.afterEach((to, from) => {
    NProgress.done()
})
